package com.heima.xxljob.demo;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Component
public class HelloJob {

    //注解的属性值，需要和xxl-job控制台配置的JobHandler一致
    @XxlJob("demoJobHandler")
    public void job() {
        System.out.println(new Date() + "简单任务执行了。。。。");
    }

    ////注解的属性值，需要和xxl-job控制台配置的JobHandler一致
    //@XxlJob("shardingJobHandler")
    //public void job2() {
    //    System.out.println(new Date() + "轮询任务执行了。。。。");
    //}


    @XxlJob("shardingJobHandler")
    public void job2() {
        //分片数量
        int shardTotal = XxlJobHelper.getShardTotal();
        //当前我自己的分片索引
        int shardIndex = XxlJobHelper.getShardIndex();

        //获取要执行的任务
        List<String> jobs = getJob();

        for (int i = 0; i < jobs.size(); i++) {
            //根据分片数量取模    区分不同的分片处理不同的业务
            if (i % shardTotal == shardIndex) {
                //判断是否该当前分片执行任务
                System.out.println(shardIndex + "号分片执行了任务：" + jobs.get(i));
            }
        }
    }


    private List<String> getJob() {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add("发优惠卷给用户" + i);
        }
        return list;
    }
}